package com.douma.lock;

import redis.clients.jedis.Jedis;

/**
 * 抖码课堂，专注中国程序员基础内功修炼
 * 官网：douma-tech.com
 * 公众号：抖码课堂
 *
 * @作者 : 老汤
 */
public class RedisDistributeLock1 {
    private Jedis jedis;

    public RedisDistributeLock1(Jedis jedis) {
        this.jedis = jedis;
    }

    // 多个 redis 操作不是原子性，导致数据并发安全问题
    public boolean lock() {
        String state = jedis.get("state");
        if (state == null || state.equals("0")) {
            // 加锁成功
            jedis.set("state", "1");
            return true;
        }
        // 加锁失败
        return false;
    }

    // 释放锁，将 state 设置为 0
    public void unlock() {
        jedis.set("state", "0");
    }
}
